package apuesta.service;//

import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.StatelessSession;

import apuesta.dto.ApuestaDto2;
import apuesta.dto.EventoDto;
import apuesta.dto.ReporteGanaciasDto;
import apuesta.dto.UsuarioDto;
import apuesta.dto.UsuarioDto2;
import apuesta.hibernate.HibernateFactoryApuesta;

public class ReporteService {
	
	static public List<ReporteGanaciasDto> reporteGanancia(){
		List<ReporteGanaciasDto> ganacias = null;
		try {
            StatelessSession session = HibernateFactoryApuesta.getSessionFactory().openStatelessSession();//ESTA LLAMA A LA PRIMERA CLASE, LA FACTORY
            //Query query = session.createQuery("select * from loquesea");
            Query query = session.getNamedQuery("query_reporteGanancias");
            //query.setInteger("p_evento", co_conten);//se setean los parametros, aqui van sin :
             ganacias = query.list();
             System.out.println("size ganancias: "+ganacias.size());
        } catch (Exception ep) {
            System.err.println("Error: "+ep);
        }
        return ganacias;
	}

	public static List<EventoDto> EventosAcabados() {
		List<EventoDto> eventos= null;
		try {
			Session sesion = HibernateFactoryApuesta.getSessionFactory().openSession();
			Query query = sesion.getNamedQuery("query_eventosTerminados");
			eventos = (List<EventoDto>)query.list();	
        } catch (Exception ep) {
            System.err.println("Error: "+ep);
        }
        return eventos;
	}

	public static List<UsuarioDto2> listaGanadores(int id_evento) {
		List<UsuarioDto2> ganadores = null;
		try {
			Session sesion = HibernateFactoryApuesta.getSessionFactory().openSession();
			Query query = sesion.createSQLQuery("select u.* from t_evento e inner join t_apuesta a "+
			"on e.Id_Evento = a.Id_Evento inner join t_usuario u on a.Id_Usuario = u.Id_Usuario where e.Id_Evento ="+id_evento+ 
			" and a.ResultadoLocal_Apuesta = e.ResultadoLocal_Evento and a.ResultadoVisitante_Apuesta = e.ResultadoVisitante_Evento").addEntity("UsuarioDto2",UsuarioDto2.class);
			ganadores = (List<UsuarioDto2>)query.list();	
        } catch (Exception ep) {
            System.err.println("Error: "+ep);
        }
		System.out.println(ganadores.size());
        return ganadores;

	}
	
	


}
